package page.ineffable.photostorage.service;


import org.springframework.web.multipart.MultipartFile;
import page.ineffable.photostorage.pojo.Photo;

import java.util.List;

/**
 * 图片存储接口
 *
 * @author lqs2
 * @date 2018/10/28, Sun
 */
public interface PhotoService {

    /**
     * 图片上传
     *
     * @param username 用户名
     * @param filename 文件名
     * @param bytes    文件
     * @return 一个photo的具体信息
     **/
    Photo uploadPhoto(String username, String filename, byte[] bytes);

    /**
     * 图片上传
     *
     * @param username 用户名
     * @param filename 文件名
     * @param file     文件
     * @return 一个photo的具体信息
     **/
    Photo uploadPhoto(String username, String filename, MultipartFile file);

    /**
     * 获取用户相册照片
     *
     * @param username 用户名
     * @return 所有照片
     **/
    List<Photo> getPhotos(String username);

    /**
     * 根据用户名和图片id删除图像
     *
     * @param id       图片唯一id
     * @param username 用户名
     * @return 是否删除成功
     **/
    boolean dropPhoto(String id, String username);

    /**
     * 根据图像的id获取图像的信息
     *
     * @param id 图像id
     * @return 图像信息
     **/
    Photo getPhotoById(String id);

    /**
     * 获取图像存储的根路径
     *
     * @return 根路径
     **/
    String getImageRootPath();

    /**
     * 修改图像是否有水印的状态
     *
     * @param id    图像的id
     * @param state 1：有水印；0：无
     * @return 是否修改成功
     **/
    boolean modImageMarkState(String id, int state);


    /**
     * 根据图像的id 修改图像信息
     *
     * @param id    图像id
     * @param photo 图像
     **/
    boolean modImageInfo(String id, Photo photo);
}
